Debugging Lazy Functional Programs by Asking the Oracle
نویسندگان
چکیده
The complexity of lazy evaluation forbids classic debugging techniques like a simple step-by-step representation of the buggy program run. Therefore, most sophisticated tools for searching bugs in lazy functional programs try to display the run as if the program’s underlying semantics was strict. In order to provide such a strict representation current approaches gather much information about the executed program. We utilized a new technique to drastically reduce the amount of gathered data and show how to use the reduced information to implement a debugging tool which supports declarative debugging as well as a strict step-by-step tracer.
منابع مشابه
Declarative Debugging of Lazy Functional Programs
We show how declarative (or algorithmic) debugging can be applied to lazy functional programming and describe a prototype implementation. We rst present a declarative debugger for logic programs which relies on three primitives that determine if an atom is valid in the intended interpretation, return the successful clause instance used by a call and return single atoms from a conjunction of ato...
متن کاملA Slicing Tool for Lazy Functional Logic Programs
Program slicing is a well-known technique that has been widely used for debugging in the context of imperative programming. Debugging is a particularly difficult task within lazy declarative programming. In particular, there exist very few approaches to program slicing in this context. In this paper, we describe a slicing tool for firstorder lazy functional logic languages. We also illustrate i...
متن کاملA Logical Framework for the Algorithmic Debugging of Lazy Functional-Logic Program
Traditional debugging techniques are not well suited for lazy functional programming, because of the diicult-to-predict evaluation order. Therefore, declarative debugging techniques have been proposed, which allow to focus on the intended meaning of programs, abstracting away operational concerns. Similar techniques are known also for logic programming and for combined functional logic language...
متن کاملTowards a Portable Lazy Functional Declarative Debugger
Declarative (or algorithmic) debugging is a promising technique for debugging lazy functional programs. This paper addresses two important reasons why it is not more widespread: the diiculty of writing a declarative debugger for a lazy functional language in the language itself and the eeciency of the debugger. Using the source language to implement the debugger is desirable for portability and...
متن کاملFreja, Hat and Hood - A Comparative Evaluation of Three Systems for Tracing and Debugging Lazy Functional Programs
In this paper we compare three systems for tracing and debugging Haskell programs: Freja, Hat and Hood. We evaluate their usefulness in practice by applying them to a number of moderately complex programs in which errors had deliberately been introduced. We identify the strengths and weaknesses of each system and then form ideas on how the systems can be improved further.
متن کامل